home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 151-175 / disk_166 / stevie / bugs / bug1 / fileio.c.diff < prev    next >
Text File  |  1992-05-06  |  1KB  |  58 lines

  1. 4a5
  2. >  * further   modifications by:  Robert Regn       rtregn@faui32.uucp
  3. 8a10
  4. > #include <stat.h>
  5. 31a34
  6. > static char rdonly=0;
  7. 57c60,62
  8. <     filemess("");
  9. ---
  10. >     rdonly = (access(fname, 2) != 0);
  11. >     filemess( rdonly ? "[Read only]" : "");
  12. >     outstr("rdonly : ");
  13. 82c87,89
  14. <                 exit(1);
  15. ---
  16. >                 {outstr("\n\r");
  17. >                 windexit(1);
  18. >                 }
  19. 118c125
  20. <         p="\"%s\" %d lines, %ld characters (%d un-printable))";
  21. ---
  22. >         p="\"%s\" %s %d lines, %ld characters (%d un-printable))";
  23. 120c127
  24. <         p="\"%s\" %d lines, %ld characters";
  25. ---
  26. >         p="\"%s\" %s %d lines, %ld characters";
  27. 122c129
  28. <     sprintf(buff, p, fname, linecnt, nchars, unprint);
  29. ---
  30. >     sprintf(buff, p, fname, rdonly ? "[Read only]" : "", linecnt, nchars, unprint);
  31. 146a154,155
  32. >     struct stat sbuf;
  33. >     char newfile=1;
  34. 149a159,160
  35. >     if (stat(fname, &sbuf)!= 0)    /* save mode of file for creating */
  36. >         newfile = 1;
  37. 166c177,178
  38. <     rename(fname, backup);
  39. ---
  40. >     /* skipping rename avoids overwriting  R/O files by creating a new */
  41. >     /* also save link structure             R. Regn*/
  42. 167a180,181
  43. >     if (!rdonly && sbuf.st_nlink == 1)
  44. >         rename(fname, backup);
  45. 168a183
  46. 172c187,189
  47. <         emsg("Can't open file for writing!");
  48. ---
  49. >         if (rdonly)
  50. >             emsg("File is Read only");
  51. >         else     emsg("Permission denied");
  52. 175a193,196
  53. >     if (!rdonly && !newfile)    /* restore mode (and owner) properly */
  54. >         {chmod(fname, sbuf.st_mode&04777);
  55. >          chown (sbuf.st_uid, sbuf.st_gid);
  56. >         }
  57.